/*
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

<html>


<script src="http://chrometophone.appspot.com/_ah/channel/jsapi"></script>
<script src="send_logic.js"></script>
<script>
function onClickHandler(info, tab) {
  var url = info.srcUrl;
  if (url == undefined) url = info.linkUrl;
  if (url == undefined) url = info.url || tab.url;

  var msgType = info.mediaType;
  if (msgType == undefined) msgType = 'page';

  var sel = info.selectionText || '';

  var bg = chrome.extension.getBackgroundPage();
  bg.sendToPhone(info.title || tab.title, url, msgType, sel, function(status) {
    if (status == STATUS_LOGIN_REQUIRED) {
      chrome.tabs.create({url: signInUrl});
    } 
  });
}

function isWhitelisted(domain) {
  var domains = JSON.parse(localStorage.getItem('whitelist')) || {};
  return domains[domain];
}

function addToWhitelist(domain) {
  var domains = JSON.parse(localStorage.getItem('whitelist')) || {};
  domains[domain] = true;
  localStorage.setItem('whitelist', JSON.stringify(domains));
}

if (chrome.contextMenus) {
  chrome.contextMenus.create({'title': chrome.i18n.getMessage('app_name_short'),
                              'documentUrlPatterns': [ 'http://*/*', 'https://*/*' ],
                              'onclick': onClickHandler,
                              'contexts': ['link', 'selection', 'image', 'video', 'audio']});
}

var lastRequest;

// Handle content script requests.
chrome.extension.onRequest.addListener(
    function(info, sender, respond) {
      var msgType = (info.selection && info.selection.length > 0) ? 'selection' : 'page';
      var domain = info.url.match(/:\/\/(.[^/]+)/)[1];

      if (isWhitelisted(domain)) {
        sendToPhone(info.title, info.url, msgType, info.selection, function(status) {
          alert('sent to phone!');
          if (status == STATUS_LOGIN_REQUIRED) {
            chrome.tabs.create({url: signInUrl});
          }
        });
      } else {
        var notification = webkitNotifications.createHTMLNotification('notification.html');
        lastRequest = info;
        notification.show();
      }
      respond();
    });

</script>

</html>
